// app.js
const config = require('./utils/config')
const api = require('./utils/api')

App({
  // 获取授权头信息
  getAuthHeader() {
    const token = wx.getStorageSync('token');
    return {
      'Authorization': token ? `Bearer ${token}` : '',
      'Content-Type': 'application/json'
    };
  },

  // 开启调试模式
  enableDebug() {
    this.globalData.debug = true;
    console.log('已开启调试模式');
  },
  
  onLaunch() {
    // 在这里可以进行小程序初始化
    console.log('小程序启动')

    // 获取系统信息
    const systemInfo = wx.getSystemInfoSync()
    this.globalData.systemInfo = systemInfo
    console.log('系统信息:', systemInfo)
    
    // 设置全局错误处理
    const oldTriggerEvent = wx.triggerEvent;
    
    wx.triggerEvent = function(event, options) {
      try {
        return oldTriggerEvent.call(this, event, options);
      } catch (err) {
        console.error(`全局错误捕获: ${err.message}`, err);
        return false;
      }
    };
    
    // 捕获未处理的Promise错误
    wx.onUnhandledRejection(res => {
      console.error('未处理的Promise错误:', res.reason);
    });
    
    // 捕获未处理的JS错误
    wx.onError(res => {
      console.error('未处理的JS错误:', res.message);
    });
    
    // 如果需要，这里可以检查更新
    if (wx.canIUse('getUpdateManager')) {
      const updateManager = wx.getUpdateManager()
      updateManager.onCheckForUpdate(function (res) {
        if (res.hasUpdate) {
          updateManager.onUpdateReady(function () {
            wx.showModal({
              title: '更新提示',
              content: '新版本已经准备好，是否重启应用？',
              success(res) {
                if (res.confirm) {
                  updateManager.applyUpdate()
                }
              }
            })
          })
        }
      })
    }
  },

  onShow() {
    // 小程序重新进入前台时触发
    console.log('小程序重新进入前台')
  },

  onHide() {
    // 小程序进入后台时触发
    console.log('小程序进入后台')
  },

  globalData: {
    apiHost: 'http://localhost:3001/api',
    userInfo: null,
    systemInfo: null,
    config: config,
    api: api,
    apiBaseUrl: config.API_BASE_URL + '/miniapp',
    debug: false  // 调试模式标志
  }
})
